/**
 * @Function 归集部门绩效统计DAO
 * @ProjectName credit-data-platform
 * @PackageName com.py.credit.dao
 * @FileName AchievementCountDao.java
 * @Date 2018年5月14日下午12:04:20
 * @Author Min DongXv
 * @Copyright (c) 2018, 金电联行 All Rights Reserved.
 */
package com.py.credit.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.py.credit.entity.AchievementCount;
import com.py.credit.entity.AchievementDetails;
import com.py.framework.core.common.Page;

/**
 * @Function 归集部门绩效统计DAO
 * @ClassName AchievementCountDao
 * @Date 2018年5月14日 下午12:04:20
 * @Author Min DongXv
 */
public interface AchievementDao {

	/**
	 * @return
	 * @Function 分页查询归集部门统计概述
	 * @FileName AchievementCountDao.java
	 * @MethodName selectAchievementCountByConditionForPage
	 * @Date 15:09 18/7/20
	 * @Author Yaos
	 */
	public List<Map<String, Object>> selectAchievementCountByConditionForPage(
			@Param(value = "columns") List<String> columns,
			@Param(value = "additionalColumns") String[] additionalColumns,
			@Param(value = "conditions") List<String> condition, @Param(value = "page") Page page,
			@Param(value = "params") Map<String, Object> params);

	/**
	 * @return
	 * @Function 查询当期统计概述
	 * @FileName AchievementCountDao.java
	 * @MethodName selectAchievementDeptAndTable
	 * @Date 15:09 18/7/20
	 * @Author Yaos
	 */
	public List<Map<String, Object>> selectAchievementCountByDateRange(@Param(value = "dateRange") String dateRange);

	/**
	 * @param columns
	 * @param additionalColumns
	 * @param deptID
	 * @param page
	 * @return
	 * @Function 分页查询归集部门统计数据
	 * @FileName AchievementCountDao.java
	 * @MethodName selectAchievementDetailsForPage
	 * @Date 2018年5月14日 下午2:40:24
	 * @Author Min DongXv
	 */
	public List<Map<String, Object>> selectAchievementDetailsForPage(@Param(value = "columns") List<String> columns,
			@Param(value = "additionalColumns") String[] additionalColumns,
			@Param(value = "conditions") List<String> condition, @Param(value = "page") Page page,
			@Param(value = "params") Map<String, Object> params);

	/**
	 * @param achievementDetails
	 * @return
	 * @Function 新增归集部门统计数据
	 * @FileName AchievementCountDao.java
	 * @MethodName addAchievementCount
	 * @Date 2018年5月14日 下午2:40:24
	 * @Author Min DongXv
	 */
	public int addAchievementDetails(AchievementDetails achievementDetails);

	/**
	 * @return
	 * @Function 查询当月需要统计的归集部门绩效
	 * @FileName AchievementCountDao.java
	 * @MethodName selectAchievementCountData
	 * @Date 2018年5月15日 上午9:39:58
	 * @Author Min DongXv
	 */
	public List<Map<String, Object>> selectAchievementDetailsData(@Param(value = "list") String[] list,
			@Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime);

	/**
	 * @return
	 * @Function 删除月度绩效统计
	 * @FileName AchievementCountDao.java
	 * @MethodName deleteMonthCount
	 * @Date 2018年5月15日 上午9:39:58
	 * @Author Min DongXv
	 */
	public void deleteMonthCount(@Param(value = "dateRange") String dateRange);

	/**
	 * @return
	 * @Function 删除季度绩效统计
	 * @FileName AchievementCountDao.java
	 * @MethodName deleteQuarterCount
	 * @Date 2018年5月15日 上午9:39:58
	 * @Author Min DongXv
	 */
	public void deleteQuarterCount(@Param(value = "dateRange") String dateRange,
			@Param(value = "month") String[] month);

	/**
	 * @return
	 * @Function 删除年度绩效统计
	 * @FileName AchievementCountDao.java
	 * @MethodName deleteQuarterCount
	 * @Date 2018年5月15日 上午9:39:58
	 * @Author Min DongXv
	 */
	public void deleteYearCount(@Param(value = "dateRange") String dateRange);

	/**
	 * @return
	 * @Function 删除实时每日每周绩效统计
	 * @FileName AchievementCountDao.java
	 * @MethodName deleteOtherCount
	 * @Date
	 * @Author Min DongXv
	 */
	public void deleteOtherCount(@Param(value = "dateRange") String dateRange);

	/**
	 * @return
	 * @Function 批量插入绩效统计数据
	 * @FileName AchievementCountDao.java
	 * @MethodName batchAddAchievementCount
	 * @Date 2018年5月15日 上午9:39:58
	 * @Author Min DongXv
	 */
	public void batchAddAchievementDetails(@Param(value = "list") List<AchievementDetails> list);

	/**
	 * @return
	 * @Function 定时任务处理归集部门绩效概述->删除数据
	 * @FileName AchievementCountDao.java
	 * @MethodName deleteAchievementCount
	 * @Date 18:09 18/7/20
	 * @Author Yaos
	 */
	public void deleteAchievementCount(@Param(value = "dateRange") String dateRange);

	/**
	 * @return
	 * @Function 定时任务处理归集部门绩效概述->写入数据
	 * @FileName AchievementCountDao.java
	 * @MethodName insertAchievementCount
	 * @Date 18:09 18/7/20
	 * @Author Yaos
	 */
	public void insertAchievementCount(@Param(value = "list") List<AchievementCount> data);
}
